package br.com.infnet.posgraduacao.bean;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

import br.com.infnet.cultbook.domain.pedido.ItemPedido;
import br.com.infnet.cultbook.domain.pedido.Pedido;
import br.com.infnet.cultbook.domain.produto.Livro;
import br.com.infnet.cultbook.domain.profile.Pessoa;
import br.com.infnet.cultbook.service.LivroService;
import br.com.infnet.cultbook.service.PedidoService;
import br.com.infnet.cultbook.service.PessoaService;



@ManagedBean(name = "mockBean")
@RequestScoped
public class MockBean {
	
	private final String LISTAR = "listarLivros";
	
	@EJB
	private LivroService livroService;
	
	@EJB
	private PedidoService pedidoService;
	
	@EJB
	private PessoaService pessoaService;
	
	private Integer quantidadeParaVender;
	
	private Long idLivroParaVender;
	
	public String mockVenderLivro() {
		Livro livro = livroService.findById(idLivroParaVender);
		List<Pessoa> clientes = pessoaService.list();
		Pessoa cliente = clientes != null && clientes.size() > 0 ? pessoaService.list().get(0) : null;
		if(livro != null && cliente != null) {
			Pedido pedido = new Pedido();
			pedido.setCliente(cliente);
			pedido.setData(new Date());
			pedido.setNumero(new Long(pedido.getData().getTime()));
			ItemPedido itemPedido = new ItemPedido();
			itemPedido.setLivro(livro);
			itemPedido.setQuantidade(quantidadeParaVender);
			pedido.addItemPedido(itemPedido);
			pedidoService.fecharPedido(pedido);
		}

		return LISTAR;
	}
	
	public String mockAdicionarLivros() {
		List<Livro> lista = livroService.list();
		int quantidadeLivros = lista != null ? lista.size() : 0;
		for (int i = quantidadeLivros; i < quantidadeLivros + 10; i++) {
			Livro livro = new Livro();
			livro.setAutor("Autor " + i);
			livro.setIsbn("123" + i);
			livro.setPreco(new BigDecimal(i));
			livro.setTitulo("Titulo " + i);
			livroService.persist(livro);
		}

		return LISTAR;
	}

	public Integer getQuantidadeParaVender() {
		return quantidadeParaVender;
	}

	public void setQuantidadeParaVender(Integer quantidadeParaVender) {
		this.quantidadeParaVender = quantidadeParaVender;
	}

	public Long getIdLivroParaVender() {
		return idLivroParaVender;
	}

	public void setIdLivroParaVender(Long idLivroParaVender) {
		this.idLivroParaVender = idLivroParaVender;
	}
	
}
